Preparando o Ambiente de Desenvolvimento

Introdução

Os computadores não compreendem diretamente as linguagens de programação; elas precisam ser convertidas para a linguagem de máquina, composta apenas por 0s e 1s (binário), que é a única linguagem que o computador entende. Dependendo da linguagem de programação, essa conversão pode ser feita por meio de compilação ou interpretação.

Linguagens de programação compiladas traduzem o código-fonte para código de máquina antes da execução do programa. Um compilador realiza essa conversão, gerando instruções diretamente compreensíveis pela arquitetura da máquina alvo. Isso resulta em uma execução mais eficiente e rápida, pois as instruções já foram processadas e otimizadas antes da execução.

Por outro lado, linguagens de programação interpretadas traduzem o código-fonte para código de máquina durante a execução. Um interpretador analisa o código linha por linha, tornando o processo mais lento em comparação com a compilação. No entanto, a interpretação oferece maior portabilidade, permitindo a execução do mesmo código-fonte em diferentes sistemas operacionais e arquiteturas, desde que haja um interpretador disponível.

diferença entre compilador e interpretador

Algumas linguagens, como Python e JavaScript (JS), usam uma abordagem intermediária. O código-fonte é compilado para bytecode, uma representação binária das instruções que uma máquina virtual específica pode entender. Em seguida, a máquina virtual executa o bytecode, proporcionando portabilidade e eficiência sem a necessidade de interpretar o código linha por linha.

arquivo de texto para arquivo de bytecode

O bytecode permite a aplicação da técnica de compilação Just-In-Time (JIT), que ocorre durante a execução do bytecode. Um compilador JIT traduz partes do código em código de máquina otimizado para a arquitetura específica do computador, melhorando significativamente o desempenho. Esse código de máquina é armazenado em cache para reutilização em futuras execuções do mesmo trecho de código, evitando a necessidade de recompilação repetitiva.

A compilação JIT também permite que a linguagem de programação forneça uma combinação de portabilidade e eficiência, pois o mesmo código-fonte pode ser executado em diferentes plataformas, mas o compilador JIT pode gerar código de máquina otimizado para cada plataforma específica.

A Linguagem de Programação Python

Dentre as várias linguagens de programação existentes, escolhemos começar por Python. Eis alguns motivos:

  1. Simplicidade: Python é conhecido por sua sintaxe limpa e fácil de ler, tornando-o amigável para iniciantes sem experiência prévia em programação.
  2. Didática: Python é frequentemente escolhido como linguagem inicial em cursos de programação devido à sua abordagem didática e acessível para ensinar conceitos fundamentais de programação.
  3. Escalabilidade: Embora seja fácil para iniciantes, Python também é uma linguagem poderosa e escalável, o que significa que os programadores podem avançar em complexidade à medida que aprofundam seus conhecimentos.
  4. Amplas Aplicações: Python é amplamente utilizado em diversos campos, incluindo Machine Learning, Data Science, Computação Científica, Automação, desenvolvimento de APIs e Internet das Coisas (IoT), tornando-se uma escolha versátil para aprendizado e aplicação profissional.
  5. Relevância Profissional: Por ser uma linguagem atual e amplamente adotada em diversas áreas da indústria, o conhecimento em Python pode ser vantajoso para futuras oportunidades de trabalho e carreira.

Instalação

O Python deve ser instalado no computador para executar códigos escritos na linguagem de programação Python. Quando instalamos o Python no computador, ele já vem com o interpretador, o compilador para bytecodes, e o compilador JIT de bytecode. Siga o link apropriado para o seu sistema operacional para instalar o interpretador Python:

Utilização

Modo Interativo

No Modo Interativo, os comandos podem ser inseridos e executados um de cada vez. Para abrir o modo interativo, execute o interpretador Python, que exibirá o prompt principal >>> indicando que um comando pode ser inserido. Por exemplo, digitar o comando print("Olá Mundo!") e pressionar Enter executará o comando.

Modo de Arquivo

No Modo de Arquivo, várias linhas de código Python podem ser agrupadas em um arquivo de código fonte com a extensão .py. Nesse caso, o interpretador Python funciona como um compilador, gerando bytecode do seu código fonte. Para usar o Modo de Arquivo, você precisará criar e escrever o código Python em um editor de texto e, em seguida, executá-lo usando um terminal.

Ambiente de desenvolvimento integrado

Para facilitar o desenvolvimento de programas em Python, usaremos o Visual Studio Code (vscode). Trata-se de um Ambiente de Desenvolvimento Integrado (IDE) que integra recursos para escrever, depurar, compilar e gerenciar dependências de código em um único lugar. Você pode baixar o VSCode aqui.

Já com o Python instalado, abra o vscode e acesse a aba de extensões (atalho Ctrl + Shift + X). Em seguida, instale as seguintes extensões:

Criando nosso projeto

É muito importante mantermos organizado nosso ambiente de trabalho. Como programadores, separamos nossos códigos em projetos, que são pastas que agrupam nossos arquivos de código.

Crie uma pasta para armazenar todos os nossos códigos relacionados à nossa matéria. Eu chamarei esta pasta de ifms-algoritmos-python.

Pelo vscode, acesse a aba de explorador de pastas (atalho Ctrl + Shift + X) e abra a pasta recém criada (atalho Ctrl + K Ctrl + O).

Organizaremos a pasta da nossa matéria por capítulos. Criaremos uma pasta para cada capítulo, onde colocaremos os códigos desenvolvidos naquele capítulo.

Como já estamos no segundo capítulo, crie a pasta cap02 dentro da pasta da nossa matéria. Você pode fazer isso no vscode clicando com o botão direito no espaço vazio da aba de explorador e selecionando "New folder...".

Agora, crie o arquivo hello-world.py dentro da pasta cap02. Você pode fazer isso no vscode clicando com o botão direito em cima da pasta e selecionando "New file...". Observe que todos os arquivos de código-fonte em Python devem terminar com a extensão .py.

Digite o comando print('hello, world!') dentro do arquivo recém-criado e tecle F5 para executá-lo. Parabéns, esse é seu primeiro programa em Python!

Debugging

Errar faz parte do processo de aprendizagem, especialmente na programação. No entanto, às vezes é difícil encontrar a fonte de um erro no código. É aí que entra a arte de debugging. Debugging, ou depuração de código, é o processo de identificar, isolar e corrigir erros em um programa de computador. Quando um programa apresenta comportamentos inesperados, é necessário depurar o código para encontrar e resolver o problema. Isso envolve pausar a execução do programa, observar variáveis e valores em diferentes pontos do código e identificar onde ocorrem os erros. O debugging também é útil para entender o funcionamento do programa, permitindo que você o execute passo a passo, no seu próprio ritmo.

Crie o arquivo factorials.py dentro da pasta cap02, e adicione o seguinte código no arquivo:

def calculate_sum_of_factorials(argument1, argument2):
    factorial1 = calculate_factorial(argument1)
    factorial2 = calculate_factorial(argument2)
    result = calculate_sum(factorial1, factorial2)
    return result

def calculate_factorial(argument):
    factorial_result = 1
    for i in range(1, argument + 1):
        factorial_result *= i
    return factorial_result

def calculate_sum(argument1, argument2):
    return argument1 + argument2

a = 5
b = 10
sum_of_factorials = calculate_sum_of_factorials(a, b)
print("The sum of factorials of the entered integers is", sum_of_factorials)

Veja se você consegue entender o que esse código está fazendo. Agora, antes de executá-lo de uma vez, experimente colocar um breakpoint na linha 16.

Dentre as opções de depuração no vscode, você pode continuar a execução até o próximo breakpoint (F5), avançar (F10), entrar (F11), sair (Shift + F11).

Na aba de depuração, você pode ver os valores das variáveis atuais, definir observadores (watch) de variáveis ou expressões, consultar a pilha de chamadas de funções e os breakpoints.

Na aba "Debug Console", você pode escrever linhas de códigos que são executadas no contexto do programa atual, com acesso às suas variáveis e funções.

No momento, essas informações podem parecer abstratas se você ainda está no início de sua jornada como programador. No entanto, depurar é uma ferramenta essencial para programadores e, à medida que você aprender mais, tudo ficará mais claro e fará mais sentido. Por isso, convido você a revisitar essa seção após adquirir mais maturidade em programação. Com o tempo e o conhecimento adquirido, essas práticas e termos farão mais sentido e serão uma parte natural do seu fluxo de trabalho como desenvolvedor.